jetcrab\ast\statements/
control_flow.rs

1use crate::ast::common::Span;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5pub struct BlockStatement {
6    pub body: Vec<crate::ast::node::Node>,
7    pub span: Option<Span>,
8}
9
10#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11pub struct IfStatement {
12    pub test: Box<crate::ast::node::Node>,
13    pub consequent: Box<crate::ast::node::Node>,
14    pub alternate: Option<Box<crate::ast::node::Node>>,
15    pub span: Option<Span>,
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
19pub struct ForStatement {
20    pub init: Option<Box<crate::ast::node::Node>>,
21    pub test: Option<Box<crate::ast::node::Node>>,
22    pub update: Option<Box<crate::ast::node::Node>>,
23    pub body: Box<crate::ast::node::Node>,
24    pub span: Option<Span>,
25}
26
27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
28pub struct ForInStatement {
29    pub left: Box<crate::ast::node::Node>,
30    pub right: Box<crate::ast::node::Node>,
31    pub body: Box<crate::ast::node::Node>,
32    pub span: Option<Span>,
33}
34
35#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
36pub struct ForOfStatement {
37    pub left: Box<crate::ast::node::Node>,
38    pub right: Box<crate::ast::node::Node>,
39    pub body: Box<crate::ast::node::Node>,
40    pub span: Option<Span>,
41}
42
43#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
44pub struct WhileStatement {
45    pub test: Box<crate::ast::node::Node>,
46    pub body: Box<crate::ast::node::Node>,
47    pub span: Option<Span>,
48}
49
50#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
51pub struct DoWhileStatement {
52    pub body: Box<crate::ast::node::Node>,
53    pub test: Box<crate::ast::node::Node>,
54    pub span: Option<Span>,
55}
56
57#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
58pub struct SwitchStatement {
59    pub discriminant: Box<crate::ast::node::Node>,
60    pub cases: Vec<SwitchCase>,
61    pub span: Option<Span>,
62}
63
64#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
65pub struct SwitchCase {
66    pub test: Option<Box<crate::ast::node::Node>>,
67    pub consequent: Vec<crate::ast::node::Node>,
68    pub span: Option<Span>,
69}
70
71#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
72pub struct TryStatement {
73    pub block: Box<crate::ast::node::Node>,
74    pub handler: Option<Box<crate::ast::node::Node>>,
75    pub finalizer: Option<Box<crate::ast::node::Node>>,
76    pub span: Option<Span>,
77}
78
79#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
80pub struct CatchClause {
81    pub param: Box<crate::ast::node::Node>,
82    pub body: Box<crate::ast::node::Node>,
83    pub span: Option<Span>,
84}
85
86#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
87pub struct ThrowStatement {
88    pub argument: Box<crate::ast::node::Node>,
89    pub span: Option<Span>,
90}
91
92#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
93pub struct ReturnStatement {
94    pub argument: Option<Box<crate::ast::node::Node>>,
95    pub span: Option<Span>,
96}
97
98#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
99pub struct BreakStatement {
100    pub label: Option<Box<crate::ast::node::Node>>,
101    pub span: Option<Span>,
102}
103
104#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
105pub struct ContinueStatement {
106    pub label: Option<Box<crate::ast::node::Node>>,
107    pub span: Option<Span>,
108}
109
110#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
111pub struct LabeledStatement {
112    pub label: Box<crate::ast::node::Node>,
113    pub body: Box<crate::ast::node::Node>,
114    pub span: Option<Span>,
115}
116
117#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
118pub struct WithStatement {
119    pub object: Box<crate::ast::node::Node>,
120    pub body: Box<crate::ast::node::Node>,
121    pub span: Option<Span>,
122}
123
124#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
125pub struct DebuggerStatement {
126    pub span: Option<Span>,
127}
128
129#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
130pub struct ExpressionStatement {
131    pub expression: Box<crate::ast::node::Node>,
132    pub span: Option<Span>,
133}